var express = require('express');
var router = express.Router();

var dbConfig = require('../util/dbconfig.js') // 数据库操作

// var redisTools = require('../util/redisTools.js'); //使用失败，不知道咋解决

/** 
 * @description 登录模块（请求）
 */
const {
  get_verifycode,
  post_register,
  post_login_account,
  post_login_phone,
  get_userinfo,
  get_menulist,
} = require('./login/login_request.js')

/** 
 * @description 部门模块（请求）
 */
const { department_add, department_check, department_delete, department_update }  = require('./department/department_request.js') // 部门新增 - 请求


/** 
 * @description 用户模块（请求）
 */
const { user_list, user_delete, user_add, user_update }  = require('./user/user_request.js') // 用户列表

const { sqlCheckType, err_reply, success_reply } = require('./types/type.js') // 引入枚举类型、响应


/** 
 * @description 菜单模块（请求）
 */
const { menu_add, menu_delete, menu_update, menu_query, menu_srot } = require('./menu/menu_request.js')

/** 
 * @description 角色模块（请求）
 */
const { role_add, role_delete, role_update, role_query } = require('./role/role_request.js')

/** 
 * @description 其它模块（请求）
 */
const { other_lists } = require('./other/other_request.js')


/** 
 * @description 引入session
 */
var session = require('express-session');
// 配置中间件
router.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie:('name','value',{
    maxAge:5*60*1000, // 5分钟内有效，过期自动清除
    secure:false
  })
}))


/* 根请求. */
router.get('/', function (req, res, next) {
  var sql = "select * from cate";
  var sqlArr = [];
  var callBack = (err, data) => {
    if (err) {
      console.log('连接出错了')
      return;i
    } else {
      res.send({
        'list': data
      })
    }
  }

  dbConfig.sqlConnect(sql, sqlArr, callBack)
  // res.render('index', { title: 'Express' });
});

// 上传图片接口                   
// router.post('/user/upload', upload.single('file'), UserController.upload);

/**
 * 文件上传
 */
const UserController =  require('../controllers/UserController');
const { timeDate_TimeStamp } = require('../tools/timeExchange.js');
// const { token, token } = require('morgan');
const { token } = require('morgan');
const { Interface } = require('readline');
router.post("/fileUpload", UserController.fileUpload)


/****************************************************/
/*********** 1、获取验证码（注册、登录、修改密码） ***********/
/****************************************************/
/** 逻辑如下
 *  
 * 1、查询该手机号是否已经注册
 * 2、校验验证码参数，匹配成功则生成新的token,给login表插入一条新的数据；
 * 3、返回给客户端：{'user_id': data.insertId,'token': tokenValue,}
 */
router.get('/verifyCode', get_verifycode);


/************************************/
/*********** 2、注册 ***********/
/************************************/
/** 注册 - 逻辑如下
 *  
 * 1、查询该手机号是否已经注册
 * 2、校验验证码参数，匹配成功则生成新的token,给login表插入一条新的数据；
 * 3、返回给客户端：{'user_id': data.insertId,'token': tokenValue,}
 */
router.post('/register', post_register)

/************************************/
/*********** 3、登录 - 账号 ***********/
/************************************/
/** 逻辑如下
 *  
 * 1、查询该手机号是否已经注册
 * 2、校验验证码参数，匹配成功则生成新的token,并更新login表的登录时间、过期时间、token；
 * 3、查询登录表所有信息，返回给客户端
 */
router.post('/loginAccount', post_login_account)


/************************************/
/*********** 4、登录 - 手机号 ***********/
/************************************/
/** 手机登录 - 逻辑如下
 *  
 * 1、查询该手机号是否已经注册
 * 2、校验验证码参数，匹配成功则生成新的token,并更新login表的登录时间、过期时间、token；
 * 3、查询登录表所有信息，返回给客户端
 */
router.post('/loginPhone', post_login_phone)
  
/************************************/
/*********** 6、获取菜单列表***********/
/************************************/
/** 逻辑如下
 *  
 * 1、根据userID和token参数
 */
router.get('/menuList', get_menulist);

// @TODO: 部门篇

/************************************/
/*********** 8、部门新增 ***********/
/************************************/
/** 逻辑如下
 *  
 * 1、查询该部门是否已经存在
 * 2、若不存在，给部门表插入一条新的数据；
 * 3、返回给客户端：{'user_id': data.insertId,'token': tokenValue,}
 */
router.post('/department/add', department_add)

/************************************/
/*********** 9、部门查询（ 查询所有 ｜ 条件查询 ） ***********/
/************************************/
router.get('/department/check', department_check)

/************************************/
/*********** 10、部门删除（ 部门ID ） ***********/
/************************************/
router.post('/department/delete', department_delete)

/************************************/
/*********** 11、部门更新（ 部门ID ） ***********/
/************************************/
router.post('/department/update', department_update)

// @TODO: 用户篇

/************************************/
/*********** 12、用户列表（ 查询所有 ｜ 条件查询 ） ***********/
/************************************/
router.get('/userList', user_list);
router.get('/user/list', user_list)

/************************************/
/*********** 5、获取用户详情 ***********/
/************************************/
/** 逻辑如下
 *  
 * 1、根据userID参数，连表查询（login表、role表）
 * 2、查询结果为login表的所有数据集合 + role表的role_name，返回给客户端
 */
router.get('/userInfo', get_userinfo);

/************************************/
/*********** 13、用户删除（ 用户ID ） ***********/
/************************************/
router.post('/user/delete', user_delete)

/************************************/
/*********** 7、用户新增 ***********/
/************************************/
router.post('/user/add', user_add);

/************************************/
/*********** 7、用户更新 ***********/
/************************************/
router.post('/user/update', user_update);

// @TODO: 菜单篇

/************************************/
/*********** 16、菜单新增 ***********/
/************************************/
router.post('/menu/add', menu_add)

/************************************/
/*********** 17、菜单删除（ 菜单ID ） ***********/
/************************************/
router.post('/menu/delete', menu_delete)

/************************************/
/*********** 18、菜单更新 ***********/
/************************************/
router.post('/menu/update', menu_update)

/************************************/
/*********** 19、菜单查询（ 条件 ｜ 分页 ） ***********/
/************************************/
router.get('/menu/query', menu_query)

/************************************/
/*********** 20、菜单排序 ***********/
/************************************/
router.post('/menu/sort', menu_srot)


// @TODO: 角色篇

/************************************/
/*********** 20、角色新增 ***********/
/************************************/
router.post('/role/add', role_add)

/************************************/
/*********** 21、角色删除（ 角色ID ） ***********/
/************************************/
router.post('/role/delete', role_delete)

/************************************/
/*********** 22、角色更新 ***********/
/************************************/
router.post('/role/update', role_update)

/************************************/
/*********** 23、角色查询（ 分页 ｜ 查询所有 ） ***********/
/************************************/
router.get('/role/query', role_query)

// @TODO: 其它篇

/************************************/
/*********** 30、查询权限列表（涉及菜单表、权限表） ***********/
/************************************/
router.get('/other/lists', other_lists)

module.exports = router;

// console.log('1参数userID是：' + typeof req.params)//req.query.userID
// console.log('2参数userID是：' + JSON.stringify(req.params))//req.query.userID
// console.log('3参数userID是：' + typeof req.body)//req.query.userID
// // 取出参数category
// var accounValue = req.params.account
// console.log("取出参数category -> " + accounValue)
